/**
 * 该文件为路由接口（资金流水的增删改查接口）
 */

const express = require("express");
const router = express.Router();

//引入数据库model
const Profile = require("../../models/Profile.js");

//引入passport模块
const passport = require("passport");

//引入全局输出类
const JsonResult=require("../global/JsonResult.js");

//添加信息接口--（/api/profile/add）
router.post("/add", passport.authenticate("jwt", { session: false }), (req, res, next) => {
    // console.log(req.user, req.body);
    const profile = new Profile({
        type: req.body.type,
        describe: req.body.describe,
        income: req.body.income,
        expend: req.body.expend,
        cash: req.body.cash,
        remark: req.body.remark
    });
    profile.save().then((doc) => {
        // console.log("新增的信息数据", doc);
        res.json(JsonResult.success("添加信息成功",null));
    }).catch((err) => {
        // console.log(err);
        res.status(500).json(JsonResult.databaseError("数据库添加信息出错",null));
    });
});

//引入查询条件和配置项
const ProfileParams=require("../conditions/profileParams.js");

//获取所有信息接口--(/api/profile)
router.get("/", passport.authenticate("jwt", { session: false }), async (req, res, next) => {
    // console.log(ProfileParams.profileDataObj(req.query),ProfileParams.profileOptionsObj(req.query),ProfileParams.counts);
    let findDatasObj=ProfileParams.profileDataObj(req.query);
    let findOptionsObj=ProfileParams.profileOptionsObj(req.query);
    let counts=ProfileParams.counts;
    await Profile.count(findDatasObj).then((count)=>{//获取集合中的总数据量
        // console.log(count);
        counts=count;
    }).catch((err)=>{
        // console.log(err);
        res.status(500).json(JsonResult.databaseError("查询数据库长度出错",null));
    });
    // return;
    //全链式写法
    // Profile.find({},null).where("income").gt(100).skip(0).limit(5).sort({"date":-1})
    // Profile.find({},null).where("date").lt("2022-04-22 17:01:51").skip(0).limit(5).sort({"date":-1})
    // .then((doc)=>{
    //     res.json({
    //         code: 1000,
    //         message: "查询成功",
    //         data: {
    //             currentPage:req.query.pageNum?req.query.pageNum:1,
    //             currentSize:req.query.pageSize?req.query.pageSize:5,
    //             total:counts,
    //             data:doc
    //         },
    //         status: 200
    //     });
    // }).catch((err) => {
    //     console.log(err);
    //     res.status(500).json({
    //         code: 1001,
    //         message: "查询所有信息出错",
    //         data: null,
    //         status: 200
    //     });
    // });
    Profile.find(findDatasObj,null,findOptionsObj).then((doc) => {//根据时间降序查找数据
        res.json(JsonResult.success("查询成功",{
            currentPage:req.query.pageNum?req.query.pageNum:1,
            currentSize:req.query.pageSize?req.query.pageSize:5,
            total:counts,
            data:doc
        }));
    }).catch((err) => {
        // console.log(err);
        res.status(500).json(JsonResult.databaseError("查询所有信息出错",null));
    });
});

//查询单个信息接口--(/api/profile/:id)--动态路由
router.get("/:id", passport.authenticate("jwt", { session: false }), (req, res, next) => {
    console.log(req.params);
    Profile.findOne({
        _id: req.params.id
    }).then((doc) => {
        // console.log("查询到的信息数据",doc)
        res.json(JsonResult.success("查询成功",doc || []));
    }).catch((err) => {
        // console.log(err);
        res.status(500).json(JsonResult.databaseError("数据库查询出错",null));
    });
});

//编辑信息接口--（/api/profile/edit/:id）--动态路由
router.post("/edit/:id", passport.authenticate("jwt", { session: false }), (req, res, next) => {
    Profile.findByIdAndUpdate({
        _id: req.params.id
    }, {
        $set: {
            type: req.body.type,
            describe: req.body.describe,
            income: req.body.income,
            expend: req.body.expend,
            cash: req.body.cash,
            remark: req.body.remark,
            updateTime: Date.now()//每次修改完后应该更新时间
        }
    }, {
        new: true //是否返回修改后的文档，默认为false
    }).then((doc) => {
        // console.log("修改后的数据", doc);
        res.json(JsonResult.success("修改成功",null));
    }).catch((err) => {
        // console.log(err);
        res.status(500).json(JsonResult.databaseError("数据库修改出错",null));
    });
});

//删除信息接口--(/api/profile/delete/:id)--动态路由
router.delete("/delete/:id", passport.authenticate("jwt", { session: false }), (req, res, next) => {
    // console.log(req.params.id,111);
    // return;
    Profile.findByIdAndRemove({ //findOneAndRemove方法有问题-永远只删除集合中的第一项
        _id: req.params.id
    }).then((doc) => {
        // console.log("删除的数据", doc);
        res.json(JsonResult.success("删除成功",null));
    }).catch((err) => {
        // console.log(err);
        res.status(500).json(JsonResult.databaseError("数据库删除出错",null));
    });
});

module.exports = router;